<?php
	/* function.inc.php module activité */
	spl_autoload_register("check_attente");
	spl_autoload_register("getSortieByDateCmt");
	spl_autoload_register("getSortie");
	spl_autoload_register("CheckValidInscription");
	spl_autoload_register("getAllInfoSortie");
	spl_autoload_register("SendInvitation");
	spl_autoload_register("envoitNewsAuxInscrits");
	spl_autoload_register("sendLetterSortie");
	spl_autoload_register("GetOrganisateur");
	spl_autoload_register("GetCountInscrits");
	spl_autoload_register("GetMaxPlace");
	spl_autoload_register("GetInscritsAttente");
	spl_autoload_register("GetTableauAttente");
	spl_autoload_register("GetInscrits");
	spl_autoload_register("GetCountAttente");
	spl_autoload_register("SetInscrit");
    spl_autoload_register("SetInscription");
		
	function check_attente($activiteId, $membreId)
    {
          global $pdo;

          

          $count = GetCountInscrits($activiteId);

          $place = GetMaxPlace($activiteId);

          

          $sqll = 'SELECT * FROM activite_attente WHERE activite_id=' . $activiteId;

          

          $q = $pdo->prepare($sqll);

          $q->execute();

          

          if($q->rowCount())

          {

            foreach($q as $v)

            { 

              if( (intval($v['nombreAccompagnateurs']) +1) <= ($place - $count) )

              {

                  // on l'efface de la liste d'attente

                  $pdo->query('DELETE FROM activite_attente WHERE activite_attente_id='.$v['activite_attente_id']);

                  // on reinscrit le membre

                  SetInscription('inscription',$activiteId,$v['membre_id'],intval($v['nombreAccompagnateurs']));

              }

            }

          }

       }
	   
	  function getSortieByDateCmt($date,$membreId)

       {

           global $pdo;

           $sql='SELECT activite_id as value FROM activite_commentaire WHERE dateHeure="'.$date.'" AND membre_id='.$membreId;

           

           $aId = GetValueFromQuery($sql);

           $q = $pdo->query('SELECT * FROM activite_sortie WHERE sortie_activite_id='.$aId)->fetch();

           

           return '<a href="activites-detailSortie.html?id='.$q['sortie_activite_id'].'" title="">'.$q['titreSortie'].'</a>';

       }

       

       function getSortie($activiteId)

       {

           global $pdo;

           $sql='SELECT * FROM activite_sortie WHERE sortie_activite_id='.$activiteId;$q = $pdo->query($sql)->fetch();

           

           return '<a href="activites-detailSortie.html?id='.$q['sortie_activite_id'].'" title="">'.$q['titreSortie'].'</a>';

       } 
	   
	    function CheckValidInscription($membreId,$date,$heureDebut)

        {

            global $pdo;



            $sql = "SELECT * FROM activite_sortie WHERE dateSortie = Date('".$date."') AND membre_id=".$membreId;

            $rows = $pdo->prepare($sql);

            $rows->execute();



            if($rows->rowCount())

                foreach($rows as $v)

                {



                    $heure = explode("h",$v["heureDebutSortie"]);

                    $tmp = ($heure[0]) - $heureDebut;



                    if(abs($tmp)<2) {

                        return false;

                    }



                }

            return true;

        }
		
		
	function getAllInfoSortie(){

		global $pdo;

		

			$query = $pdo->query("SELECT * FROM activite_sortie");

			$info = array();

			

			$info['countInscrit'] = 0;

			$info['countSortie'] = 0;

			

				while($data = $query->fetch()){

					$inscrit = explode(";",$data['membreInscrit']);

						$info['countInscrit'] += count($inscrit)-1;

				}

				

				$info['countSortie'] = $query->rowCount();

				

			return $info;

	}
	
	function SendInvitation($membreId,$estModifiable,$actualiteId)
{
	global $pdo;
    $sql = 'SELECT membre_amis as value FROM forum_membres WHERE membre_id='.$membreId;
    $listeAmis = GetValueFromQuery($sql);
    $tableAmis = explode(';',$listeAmis);
    
	$reqTs = $pdo->prepare("SELECT * FROM activite_sortie WHERE sortie_activite_id=?");
	$reqTs->execute(array($actualiteId));
	$ts = $reqTs->fetch(PDO::FETCH_OBJ);
	
    if($estModifiable)
    {
        //$sujet2 = 'Votre ami '. sex2color(id2sex($membreId),$membreId) .' à modifié une sortie';
		$sujet = "Modifié : " . $ts->titreSortie . " le ". $ts->dateSortie;//'Votre ami '. id2pseudo($membreId) .' à modifié une sortie';
    } else {
        //$sujet2 = 'Votre ami '. sex2color(id2sex($membreId),$membreId) .' a créé une sortie';
		$sujet = "Créé : " .$ts->titreSortie . " le ". $ts->dateSortie;//'Votre ami '. id2pseudo($membreId) .' à créé une sortie';
    }
    
    foreach($tableAmis as $v)
    {
        if(!empty($v))
        {
            //
			$content = $sujet . " : <lien>http://".SITE_URL."/activites-detailSortie.html?id=". $actualiteId ."</lien>";
			
            $mail = array(
            "sujet"=>$sujet
                ,"contenu"=>
                    (
                            $content
                    )
            );
            //send_email_to_membre($v,$mail);
            sendMp($v,$sujet,$content);
        }
    }
}

function envoitNewsAuxInscrits($membreId,$actualiteId,$estModifiable=true)
{
	global $pdo;
    $sql = 'SELECT membreInscrit as value FROM activite_sortie WHERE membre_id='.$membreId;
    $listeAmis = GetValueFromQuery($sql);
    $tableAmis = explode(';',$listeAmis);
    
    if($estModifiable)
    {
        //$sujet2 = 'Votre ami '. sex2color(id2sex($membreId),$membreId) .' à modifié une sortie';
		$sujet = id2pseudo($membreId) .' à modifié une sortie';
    }
	
	$reqTs = $pdo->prepare("SELECT titreSortie FROM activite_sortie WHERE sortie_activite_id=?");
	$reqTs->execute(array($actualiteId));
	$ts = $reqTs->fetch();
	
    foreach($tableAmis as $v)
    {
        if(!empty($v))
        {
            //
			$content = $sujet2 . " : 
                            <a href='http://".SITE_URL."/activites-detailSortie.html?id=". $actualiteId ."' style='text-decoration:none;'> " . htmlspecialchars($ts['titreSortie']) . " </a>\r\n";
							
            $mail = array(
            "sujet"=>$sujet
                ,"contenu"=>
                    (
                            $content
                    )
            );
            send_email_to_membre($v,$mail);
            //sendMp($v,$sujet,$content);
        }
    }
}

	//function sendLetterSortie permet d'envoyer un mail de rappel aux membres inscrit à une sortie qui commence dans 48h
	//by infoxp
	
	function sendLetterSortie(){
		global $pdo;
		$sortie = $query->query("SELECT *,forum_membres.membre_id as mid,UNIX_TIMESTAMP(dateSortie) as dateSortie FROM activite_sortie JOIN forum_membres ON forum_membres.membre_id=activite_sortie.membre_id WHERE UNIX_TIMESTAMP(dateSortie)-".time()+(86400*2)." = ".time());
		while($data = $sortie->fetch()){
			$sujet = "Rappel à propos de la sortie " . $data['titreSortie'];
			
			$register = explode(";",$data['membreInscrit']);
			$absent = explode(";",$data['membreAbsent']);
			
			$inscrit = null;
			
				foreach($absent as $v){
					$inscrit = array();
					if(!in_array($v,$register))
							$inscrit[] = $v;
				}
				if($inscrit===null)
					$inscrit = $register;
				
			foreach($inscrit as $v){
				$message = "Bonjour " . sex2ManualColor(id2sex($v),$v) . "Vous cous êtes inscrit sur une sortie via le site ".SITE_NAME.", nous vous rappelons seulement que cette sortie (".$data['titreSortie'].") aurra lieu dans 48 Heures (" . date("d/m/Y à H:i:s ",$data['dateSortie']). ") pour ne pas là manquer ;)Cordialement l'équipe du site ".SITE_NAME;
				$mail = new Mail();
				$mail->setTo($data['membre_email'])
					 ->setSubject($sujet)
					 ->setMessage($message)
					 ->setHeader(HeaderMail::setHTML("leprojet@legtux.org"))
					 ->send();
				if($mail!==Maill::MAIL_SEND){
					sendMp($data['mid'],$sujet,$message);
				}
			}
		}
	}

	function GetOrganisateur($activiteId)

	{
		global $pdo;
		$membreId = GetValueFromQuery('SELECT membre_id as value FROM activite_sortie WHERE sortie_activite_id='.$activiteId);
		//echo 
		$sql = "SELECT membre_prenom,membre_localisation FROM forum_membres WHERE membre_id=".$membreId;
		$membreInfo = $pdo->query($sql);
		$minfo = $membreInfo->fetch(PDO::FETCH_OBJ);

		// données additionnelles
                    $img = ''.GetAvatarById($membreId);
					$add='
					Pr&eacute;nom :
					' . $minfo->membre_prenom . '
					&Acirc;ge :
					' . GetAgeById($v->membre_id). '
					Ville :
					'. GetVilleById(GetValueFromQuery('SELECT membre_departement AS value FROM forum_membres WHERE membre_id='.$membreId));'
						  ';
                    //
					
					
				return  "
				
							 ".sex2color(id2sex($membreId),$membreId)."
							 ".$img."
							 
							 
							 ".$add."";


	}

	

	function GetCountInscrits($activiteId)

	{
                $sql = 'SELECT membreInscrit as value FROM activite_sortie WHERE sortie_activite_id='.$activiteId;
		$value = GetValueFromQuery($sql);
		$tab = explode(";",$value);

		

		return (count($tab) -1);

	}

	

	function GetMaxPlace($activiteId)

	{

		return GetValueFromQuery('SELECT participantMax as value FROM activite_sortie WHERE sortie_activite_id='.$activiteId);

	}

       

        function GetInscritsAttente($activiteId)
        {
            global $pdo;
            $membreIds = $pdo->prepare('SELECT membre_id FROM activite_attente WHERE activite_id='.$activiteId);$membreIds->execute();
            $str = null;
            $i = 0;

            while($v = $membreIds->fetch(PDO::FETCH_OBJ))
            {
                $i++;
                if($v!=''){
                	$sql = 'SELECT membre_id,membre_prenom,membre_localisation FROM forum_membres WHERE membre_id='.$v->membre_id;
	                $membreInfo = $pdo->query($sql);
					$minfo = $membreInfo->fetch(PDO::FETCH_OBJ);
	
// données additionnelles
 
  	                    $img = ''.GetAvatarMinitById($v->membre_id);

						$add='<div class="cadre_thin_dotted">Pr&eacute;nom : ' . $minfo->membre_prenom .'</div>
						<div class="cadre_thin_dotted">&Acirc;ge : ' . GetAgeById($v->membre_id). '</div>
						<div class="cadre_thin_dotted">Ville : '.($ville = GetVilleById(GetValueFromQuery('SELECT membre_departement AS value FROM forum_membres WHERE membre_id='.$v->membre_id))).'</div>
						<div class="cadre_thin_dotted">Accompagnateur :</div>';					
	                    
				$endScript = '<script>
						
							;(function(){
								
								$("div .informationMembre:last-child").attr("class","informationNoMembre");
								
							})();
						
						</script>';
							
					$add = $add.$endScript;

 	                $str .= "<div class=\"cadre_alignement_block\">
							 <div class=\"cadre_center_avatar\">
							 ".sex2color(id2pseudo($v->membre_id), $v->membre_id)."
							 ".$img."</div>
							 
							 <div>".$add."</div>
							 
							 </div>";

 
 
 
               }
							
          }

            return ($str?$str:'Il n\'y a personnes dans la liste.');

        }

	

        function GetTableauAttente($activiteId)

        {

            global $pdo;

            $sql = 'SELECT * FROM activite_attente WHERE activite_id='.$activiteId;

            $membreIds = $pdo->query($sql);

            $tab = array();

            foreach($membreIds as $v)

            {

                array_push($tab,$v['membre_id']);

            }

            

            return $tab;

        }

        
	
	function GetInscrits($activiteId)

	{
		global $pdo;
		$membreIds = GetValueFromQuery('SELECT membreInscrit as value FROM activite_sortie WHERE sortie_activite_id='.$activiteId);

		

                $searchTab = array();

		$tab = explode(";",$membreIds);
		$i=0;
		foreach($tab as $v)

		{
			if($v!=''){
		$membreInfo = $pdo->prepare('SELECT membre_id,membre_prenom,membre_localisation FROM forum_membres WHERE membre_id=?');
		$membreInfo->execute(array($v));
		$minfo = $membreInfo->fetch(PDO::FETCH_OBJ);

                    // données additionnelles
                    $img = ''.GetAvatarMinitById($v);
					$add = '<div class="cadre_thin_dotted">Pr&eacute;nom : ' . $minfo->membre_prenom . '</div>
					        <div class="cadre_thin_dotted">&Acirc;ge : ' . GetAgeById($v). '</div>
					        <div class="cadre_thin_dotted">Ville : '.($ville = GetVilleById(GetValueFromQuery('SELECT membre_departement AS value FROM forum_membres WHERE membre_id='.$v))).'</div>
							<div class="cadre_thin_dotted">Accompagnateur :</div>';					
							
					$add = $add.$endScript;
                   //
					
					//if($i>0&&$i%5==0)
						//$str .= '';
		    if(is_numeric($v) && (!is_numeric(array_search($v,$searchTab))))
			
			        $str .= "<div class=\"cadre_alignement_block\">
							 <div class=\"cadre_center_avatar\">".sex2color(id2pseudo($v),$v)."
							 
							 ".$img."</div>
							 
							 <div>".$add."</div>
							 </div>";

                        array_push($searchTab,$v);
						$i++;
			}
		}
		return $str ;
	}

	function sql2Array($sqlQuery)

        {

            $tab = array();

            

            foreach($sqlQuery as $k=>$v)

            {

                array_push($tab,array('membre_id'=>$v['membre_id'],'activite_id'=>$v['activite_id'],'date'=>$v['date'],'cmt'=>$v['cmt']));

            }

        

            return $tab;

        }
        
      /*  function send_email_to_membre($membreId,$mail)
        {
            $email = GetValueFromQuery("SELECT membre_email as value FROM forum_membres WHERE membre_id=".$membreId);
			$o_mail = new Mail;
			$o_mail->setTo($email)->setSubject($mail['sujet'])->setMessage($mail['contenu'])->setHeader(HeaderMail::MailHTML("leprojet@legtux.org"))->send();
        }*/
		
        function GetCountAttente($activiteId)
        {
            $sql = "SELECT COUNT(*) as value FROM activite_attente WHERE activite_id=".$activiteId;
            $value = GetValueFromQuery($sql);

            return ($value?($value):0);
        }

    function setInscrit($action,$membreId,$activiteId)
    {
        global $pdo;

        switch($action)
        {
            case 'add':
                $val = GetValueFromQuery('SELECT activite_inscription_id AS value FROM activite_inscription WHERE membre_id='.$membreId.' AND activite_id='.$activiteId);

                if(!$val)
                    $pdo->query('INSERT INTO activite_inscription SET membre_id='.$membreId.', activite_id='.$activiteId.', status=1');
                else
                    $pdo->query('UPDATE activite_inscription SET status=1, date=NOW() WHERE activite_inscription_id='.$val);
                break;

            case 'del':
                $pdo->query('UPDATE activite_inscription SET status=0, date=NOW() WHERE membre_id='.$membreId.' AND activite_id='.$activiteId);
                break;
        }
    }
	

	/*  SetInscription ajoute ou retire l'id du membre dans la table activite_sortie

	*/

	function SetInscription($type, $itemId, $membreId,$totalAInscrire=0)
	{
		global $pdo;

		$q = $pdo->query('SELECT * FROM activite_sortie WHERE sortie_activite_id ='.$itemId);
		$res = $q->fetch();

		$tab = explode(";",$res['membreInscrit']);

		$k = array_search($membreId, $tab);

		switch($type)
		{
			case 'inscription':
				if(!is_numeric($k))
				{

                                    if(($totalAInscrire+1) <=  intval($res['participantMax']) - GetCountInscrits($res['sortie_activite_id']))

                                    {

                                        for($i=1;$i<=($totalAInscrire+1);$i++)

                                            array_push($tab,($membreId));

                                        

                                        setInscrit('add',$membreId,$res['sortie_activite_id']);

                                        

                                    }else

                                        SetAttente($membreId,$totalAInscrire,$res['sortie_activite_id']);

				}

				break;

				

			case 'desinscription':

				if(is_numeric($k)){ $tab[$k] = '';

                            

                                setInscrit('del',$membreId,$res['sortie_activite_id']);

                            

                            }

                                $pdo->query("DELETE FROM activite_attente WHERE membre_id=".$membreId." AND activite_id=".$itemId);
				
                                /* todo : query
                                 * 
                                 * $penalite = $res['penaliteDesinscription'];
                                 * $q=$pdo->prepare('UPDATE forum_membres SET membre_bonus=membre_bonus-? WHERE membre_id=?');  
                                 * $q->execute(array($penalite,$membreId));
                                 * 
                                 */
				break;
		}

		

		$q=$pdo->prepare('UPDATE activite_sortie SET membreInscrit="'.Array2String($tab).'" WHERE sortie_activite_id='.$itemId);

		$q->execute();

		

              // on place les attente dans les inscrits si il y a de la place

              if($type=='desinscription') check_attente($itemId, $membreId);

              

	return $tab;

	}

?>